一、应用场景
第三方平台用户指代非物联云平台自主注册的C端App用户。物联云平台支持第三方平台用户直接跳转至平台中,而无需再次进行注册账号、输入账号密码进行登录等操作。
第三方平台分为主流第三方平台(微信、QQ、微博、支付宝、Facebook、Twitter)及通过物联云平台认证的第三方平台。非主流第三方平台需要根据物联云平台接口规范进行实现,并将已实现的接口URL地址配置在免登陆验证中。用户在第三方平台登录成功后,通过open_id、access_token在物联云平台请求登录。
用户在第三方平台登录后,可无感切换至物联云平台中继续进行操作。
用于第三方平台维护平台间统一的用户身份体系。
二、功能说明
客户可以在物联网平台的管理台【应用中心->集成->免验证登录】中,依据第三方平台认证接口规范进行实现。在免登陆验证中配置已实现的接口URL地址和token信息。依据第三方平台用户登录接口发送请求。
第三方平台用户首次登入,物联云平台会自动为其创建用户信息。并绑定第三方平台的open_id。物联云平台支持用户解绑第三方平台的open_id。
第三方平台用户登入后,物联云平台自动初始化其登录密码,每个第三方用户只能初始化一次密码。后续按照忘记密码流程进行处理。
三、前提条件
1.依据物联云平台接口规范实现,并将接口URL地址和token配置在免登陆验证中。
2.第三方平台需要完成和物联云平台的用户登录对接。
3.目前仅支持微信用户、QQ用户、微博用户、支付宝用户、Twitter用户、Facebook用户。
四、关键流程
4.1 校验第三方OpenId在平台信息
流程说明:
首先,C端APP用户首先登录到第三方平台,获取到第三方平台的调用凭证以及第三方平台标识。
其次,C端APP用户根据第三方平台的调用凭证和第三方平台标识向物联网中台查询用户信息。
再次,物联网中台接收到查询用户信息请求,根据第三方平台的调用凭证以及第三方平台标识向第三方平台发起校验,分两种情况:
- 第三方平台为主流第三方平台时,物联网中台直接向第三方平台发起校验获取用户信息。
- 第三方平台为物联云平台标准第三方平台时,物联网中台查询到第三方平台的服务地址发起校验获取用户信息。
最后,物联网中台将第三方平台标识对应物联网中台的用户信息返回给C端APP用户。
4.2 第三方用户登录
流程说明:
首先,C端APP用户首先登录到第三方平台,获取到第三方平台的调用凭证以及第三方平台标识。
其次,C端APP用户根据第三方平台的调用凭证和第三方平台标识发起 第三方用户登录 请求。
再次,物联网中台接收到登录请求,根据第三方平台的调用凭证以及第三方平台标识向第三方平台发起校验,分两种情况:
- 第三方平台为主流第三方平台时,物联网中台直接向第三方平台发起校验获取用户信息。
- 第三方平台为物联云平台标准第三方平台时,物联网中台查询到第三方平台的服务地址发起校验获取用户信息。
接着,物联网中台根据第三方标识查询第三方平台用户是否已在物联网中台内,如不在则创建一个新的C端APP用户记录进行持久化。
最后,物联网中台为第三方平台标识对应的C端APP用户输出物联网中台调用凭证和刷新凭证。
4.3 绑定手机第三方用户登录
流程说明:
- 首先,C端APP用户首先登录到第三方平台,获取到第三方平台的调用凭证以及第三方平台标识。
- 其次,C端APP用户在APP上输入要绑定的手机号,同时向物联网中台发起请求手机验证码,将收到的手机验证码填入APP进行登录;由于企业设置了一个手机号码一天内获取验证码的阈值之后,需要通过图片验证码才能获取手机验证码,因此如果被限流之后APP需要向物联网中台获取图片验证码。
- 再次,C端APP用户根据第三方平台的调用凭证和第三方平台标识发起 绑定手机第三方用户登录 请求。
- 接着,物联网中台接收到登录请求校验手机验证码的有效性,根据第三方平台的调用凭证以及第三方平台标识向第三方平台发起校验,分两种情况:
- 第三方平台为主流第三方平台时,物联网中台直接向第三方平台发起校验获取用户信息。
- 第三方平台为物联云平台标准第三方平台时,物联网中台查询到第三方平台的服务地址发起校验获取用户信息。
- 接着,物联网中台根据第三方标识查询第三方平台用户是否已在物联网中台内,如不在则创建一个新的C端APP用户记录进行持久化,同时绑定手机号。
- 最后,物联网中台为第三方平台标识对应的C端APP用户输出物联网中台调用凭证和刷新凭证。
4.4 国外第三方用户登录
流程说明:
- 首先,C端APP用户首先登录到Facebook/Twitter第三方平台,获取到Facebook/Twitter第三方平台的调用凭证以及第三方平台标识;需要注意 目前主要适用于facebook和twitter两种第三方登录;其中facebook使用oauth2.0验证;twitter使用oauth1.0验证。
- 其次,C端APP用户根据Facebook/Twitter第三方平台的调用凭证和第三方平台标识发起 国外第三方用户登录 请求。
- 再次,物联网中台接收到登录请求,根据Facebook/Twitter第三方平台调用凭证以及第三方平台标识向Facebook/Twitter第三方平台发起校验且获取用户信息。
- 接着,物联网中台根据第三方标识查询第三方平台用户是否已在物联网中台内,如不在则创建一个新的C端APP用户记录进行持久化。
- 最后,物联网中台为第三方平台标识对应的C端APP用户输出物联网中台调用凭证和刷新凭证。
4.5 非第三方用户绑定第三方账号
流程说明:
- 首先,C端APP用户通过账号密码登录到物联中台,此时获得物联网中台的调用凭证和刷新凭证。
- 其次,C端APP用户登录到第三方平台,获取到第三方平台的调用凭证以及第三方平台标识。
- 再次,C端APP用户根据物联网中台调用凭证以及第三方平台调用凭证和第三方平台标识进行第三方账号绑定。
- 接着,物联网中台接收到平台用户绑定第三方账号请求,根据第三方平台的调用凭证以及第三方平台标识向第三方平台发起校验,分两种情况:
- 第三方平台为主流第三方平台时,物联网中台直接向第三方平台发起校验获取用户信息。
- 第三方平台为物联云平台标准第三方平台时,物联网中台查询到第三方平台的服务地址发起校验获取用户信息。
- 最后,在所有业务逻辑允许的情况下为平台用户绑定第三方平台账号。
4.6 非第三方用户绑定国外第三方账号
流程说明:
- 首先,C端APP用户通过账号密码登录到物联中台,此时获得物联网中台的调用凭证和刷新凭证。
- 其次,C端APP用户登录到Facebook/Twitter第三方平台,获取到Facebook/Twitter第三方平台的调用凭证以及第三方平台标识。
- 再次,C端APP用户根据物联网中台调用凭证以及Facebook/Twitter第三方平台调用凭证和第三方平台标识进行第三方账号绑定。
- 接着,物联网中台接收到平台用户绑定Facebook/Twitter第三方账号请求,根据Facebook/Twitter第三方平台调用凭证以及第三方平台标识向Facebook/Twitter第三方平台发起校验且获取用户信息。
- 最后,在所有业务逻辑允许的情况下为平台用户绑定Facebook/Twitter第三方平台账号。
4.7 非第三方用户解绑第三方账号
流程说明:
- 首先,C端APP用户通过账号密码登录到物联中台,此时获得物联网中台的调用凭证和刷新凭证。
- 其次,C端APP用户通过物联网中台调用凭证进行解绑各种第三方账号。
- 最后,物联网中台接收到平台用户解绑第三方账号请求,按照既定业务逻辑进行解绑。
4.8 查询第三方openId是否绑定用户
流程说明:
- 首先,C端APP用户首先登录到第三方平台,获取到第三方平台的调用凭证以及第三方平台标识。
- 其次,C端APP用户根据第三方平台的调用凭证和第三方平台标识向物联网中台查询用户信息。
- 再次,物联网中台接收到查询用户信息请求,根据第三方平台的调用凭证以及第三方平台标识向第三方平台发起校验,分两种情况:
- 第三方平台为主流第三方平台时,物联网中台直接向第三方平台发起校验获取用户信息。
- 第三方平台为物联云平台标准第三方平台时,物联网中台查询到第三方平台的服务地址发起校验获取用户信息。
- 最后,物联网中台将第三方平台标识是否绑定平台用户信息返回给C端APP用户。
4.9 校验第三方邮箱在平台的信息
流程说明:
- 首先,C端APP用户首先登录到第三方平台,获取到第三方平台的调用凭证以及第三方平台标识以及邮箱。
- 其次,C端APP用户根据第三方平台的调用凭证和第三方平台标识以及邮箱向物联网中台查询第三方平台邮箱在物联网中台绑定用户的信息。
- 再次,物联网中台接收到查询第三方平台邮箱绑定用户信息请求,根据第三方平台的调用凭证以及第三方平台标识向第三方平台发起校验,分两种情况:
- 第三方平台为主流第三方平台时,物联网中台直接向第三方平台发起校验获取用户信息。
- 第三方平台为物联云平台标准第三方平台时,物联网中台查询到第三方平台的服务地址发起校验获取用户信息。
- 校验请求邮箱是否与第三方平台邮箱一致
- 最后,物联网中台将第三方平台邮箱是否绑定平台用户信息返回给C端APP用户。
4.10 同步物联云平台标准第三方用户手机号
流程说明:
- 首先,C端APP用户首先登录到物联云平台标准第三方平台,获取到物联云平台标准第三方平台的调用凭证以及第三方平台标识。
- 其次,C端APP用户根据物联云平台标准第三方平台的调用凭证和物联云平台标准第三方平台标识登录到物联网中台,获得物联网中台调用凭证和刷新凭证,进而触发同步物联云平台标准第三方用户手机号。
- 再次,物联网中台接收到同步物联云平台标准第三方用户手机号请求,根据物联云平台标准第三方平台的调用凭证以及第三方平台标识向第三方平台发起信息查询得到物联云平台标准第三方平台对应的手机号。
- 最后,物联网中台将物联云平台标准第三方平台对应的手机号同步更新到C端APP用户账号下,完成第三方平台与物联平台账号的手机一致。
4.11 同步物联云平台标准第三方用户邮箱
流程说明:
- 首先,C端APP用户首先登录到物联云平台标准第三方平台,获取到物联云平台标准第三方平台的调用凭证以及第三方平台标识。
- 其次,C端APP用户根据物联云平台标准第三方平台的调用凭证和物联云平台标准第三方平台标识登录到物联网中台,获得物联网中台调用凭证和刷新凭证,进而触发同步物联云平台标准第三方用户邮箱。
- 再次,物联网中台接收到同步物联云平台标准第三方用户邮箱请求,根据物联云平台标准第三方平台的调用凭证以及第三方平台标识向第三方平台发起信息查询得到物联云平台标准第三方平台对应的邮箱。
- 最后,物联网中台将物联云平台标准第三方平台对应的邮箱同步更新到C端APP用户账号下,完成第三方平台与物联平台账号的邮箱一致。
五、API列表
5.1 第三方用户
5.1.1 校验第三方openId在平台的信息
接口描述
第三方用户登录在获取到第三方openId以及第三方AccessToken之后,向物联云平台发起信息查询,查询openId是否在平台下; 该接口为无认证,但会根据第三方openId以及第三方AccessToken向第三方发起校验.
请求方式
POST
请求地址
/v2/user/third/register_check
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Content-Type | true | String | application/json |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
source | body | true | Int | 用户第三方源 4: 微信 5: QQ 6: 微博 7: FaceBook 8: 推特 10: 其他 12: Apple 13: google |
plugin_id | body | false | String | 应用标识 当source为Apple时,该项必传,需要根据此项去查找对应的苹果client_id和client_secret 当source为Google时,该项必传,需要根据此项去查找对应的谷歌的client_id |
open_id | body | true | String | 第三方用户标识 当source为Google时,可不传或随意传不以传参为准,会从google的authCode中解析得到, google开发者中心不建议直接传user_id |
corp_id | body | true | String | 企业标识 |
access_token | body | true | String | 第三方调用凭证 当source为Apple时,accessToken为苹果auth2认证中的authorization code 当source为Google时,accessToken不是真实的Google AccessToken,而是Google临时授权码authCode |
请求示例:
{
"source": 4,
"corp_id": "45649745ed2f2dsf4dsf",
"open_id": "15641564sdaf6ew45f1d2",
"access_token": "1wef1sd5a4f564efd5fd5f4f456dfd",
"plugin_id": "12sd56fewdfdsf"
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
user_id | false | Int | 如果已注册,则对应平台的用户标识 |
phone | false | String | 如果已注册,则对应平台的手机号码 |
is_register | true | Boolean | 在平台是否已注册 |
返回示例:
{
"is_register":true,
"user_id":165498562,
"phone":"13838383388"
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4031001 | 调用凭证权限被禁止访问 |
4031003 | 无效的调用凭证 |
4031002 | 需要调用凭证 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4031024 | 权限不足 |
4001482 | 第三方源未知 |
4041020 | 应用不存在 |
4041023 | 未设置第三方登录地址 |
4001059 | 第三方验证失败 |
5.1.2 第三方用户登录
接口描述
用户在通过了第三方平台登录成功后,通过第三方openId、accessToken在物联云平台请求登录,如果第三方用户不在物联云平台则直接创建一个用户,如果已在物联云平台则更新相关信息.
请求方式
POST
请求地址
/v2/user_auth_third
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Content-Type | true | String | application/json |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
source | body | true | Int | 用户第三方源 4: 微信 5: QQ 6: 微博 7: FaceBook 8: 推特 10: 其他 12: Apple 13: google |
plugin_id | body | false | String | 应用标识 当source为Apple时,该项必传,需要根据此项去查找对应的苹果client_id和client_secret 当source为Google时,该项必传,需要根据此项去查找对应的谷歌的client_id |
open_id | body | true | String | 第三方用户标识 当source为Google时,可不传或随意传不以传参为准,会从google的authCode中解析得到, google开发者中心不建议直接传user_id |
corp_id | body | true | String | 企业标识 |
access_token | body | true | String | 第三方调用凭证 当source为Apple时,accessToken为苹果auth2认证中的authorization code 当source为Google时,accessToken不是真实的Google AccessToken,而是Google临时授权码authCode |
name | body | false | String | 用户名称 |
resource | body | false | String | 用户登录源 |
请求示例:
{
"source": 4,
"corp_id": "1235aed1f1df222",
"open_id":"156s1fe6d123fef15d1d2",
"access_token":"1112sdfwefdsfafd212",
"name":"李清华",
"resource":"TEST",
"plugin_id":"131566efdfaew23"
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
user_id | true | String | 用户标识 |
access_token | true | String | 调用凭证 |
refresh_token | true | String | 刷新凭证 |
expire_in | true | Int | 调用凭证的有效期 |
authorize | true | String | 用户认证码 |
返回示例:
{
"user_id":112356456,
"access_token":"dsfs16we1d1fd23afew5fdf",
"refresh_token":"1561ewfd1s2fwe5fffdfdsfsdf",
"expire_in":7200,
"authorize":"dsfe1561d56fds1fe"
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4031001 | 调用凭证权限被禁止访问 |
4031003 | 无效的调用凭证 |
4031002 | 需要调用凭证 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4031024 | 权限不足 |
4001482 | 第三方源未知 |
4041020 | 应用不存在 |
4041023 | 未设置第三方登录地址 |
4001059 | 第三方验证失败 |
4041010 | 企业不存在 |
4001477 | IOS没有配置Apple登录 |
4001478 | 调用Apple超时 |
4001479 | 调用Apple失败 |
4001480 | Apple Jwt过期 |
4001481 | Apple授权码非法 |
4001483 | APP未启用Apple登录 |
4001137 | APP未启用 |
5.1.3 绑定手机第三方用户登录
5.1.3.1 绑定手机第三方用户登录-获取手机验证码
接口描述
互联网用户使用App使用手机号码注册为注册成为物联云平台用户前,请求发送一封手机验证码的短信,手机验证码有效期是120秒。
请求方式
POST
请求地址
/v2/user_register/verifycode
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Content-Type | true | String | application/json |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
corp_id | body | true | String | 企业标识 |
phone | body | true | String | 手机号 |
phone_zone | body | false | String | 手机区号 |
captcha | body | false | String | 图片验证码,当调用本接口到了一定次数以后需要该字段 |
plugin_id | body | false | String | 注册用户绑定的应用标识 |
请求示例:
{
"corp_id":"1235sdfsd5465df5ds",
"phone":"13838383388",
"phone_zone":"+86",
"captcha":"265621",
"plugin_id":"265655233sdfs6"
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
无 | 无 | 无 | 无 |
返回示例:
{
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4041010 | 企业不存在 |
4001052 | 短信额度到达上限 |
5.1.3.2 绑定手机第三方用户登录-获取图片验证码
接口描述
当互联网用户的注册手机在一定时间段内获取手机验证码过于频繁时,此时获取手机验证码被要求需要图片验证码防止机刷手机验证码
请求方式
POST
请求地址
/v2/user_register/captcha
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Content-Type | true | String | application/json |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
corp_id | body | true | String | 企业标识 |
phone | body | true | String | 手机号 |
phone_zone | body | false | String | 手机区号 |
请求示例:
{
"corp_id":"1235sdfsd5465df5ds",
"phone":"13838383388",
"phone_zone":"+86"
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
url | true | String | 验证码图片地址 |
返回示例:
{
"url": "http://www.baidu.com"
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4041010 | 企业不存在 |
5.1.3.3 绑定手机第三方用户登录
接口描述
用户在通过了第三方平台登录成功后,通过openId、accessToken在物联云平台请求登录,如果第三方用户不在物联云平台则直接创建一个用户,如果已在物联云平台则更新相关信息,与此同时绑定该用户的手机号码.如果通过5.1.1检测出已经绑定了手机号码,则可以直接使用5.1.2接口进行登录
请求方式
POST
请求地址
/v2/user/third/auth-bind-phone
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Content-Type | true | String | application/json |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
source | body | true | Int | 用户第三方源 4: 微信 5: QQ 6: 微博 7: FaceBook 8: 推特 10: 其他 12: Apple 13: google |
plugin_id | body | false | String | 应用标识 当source为Apple时,该项必传,需要根据此项去查找对应的苹果client_id和client_secret 当source为Google时,该项必传,需要根据此项去查找对应的谷歌的client_id |
open_id | body | true | String | 第三方用户标识 当source为Google时,可不传或随意传不以传参为准,会从google的authCode中解析得到, google开发者中心不建议直接传user_id |
corp_id | body | true | String | 企业标识 |
access_token | body | true | String | 第三方调用凭证 当source为Apple时,accessToken为苹果auth2认证中的authorization code 当source为Google时,accessToken不是真实的Google AccessToken,而是Google临时授权码authCode |
name | body | false | String | 用户名称 |
resource | body | false | String | 用户登录源 |
phone | body | true | String | 绑定的手机号码 |
verifycode | body | true | String | 绑定的手机号码的验证码 |
phone_zone | body | false | String | 绑定的手机区号,默认为+86 |
请求示例:
{
"source": 4,
"corp_id": "1515wddad2332f",
"open_id":"111116554afdaed23ee",
"access_token":"14564f56fsdf32fsdfsdaf",
"name":"李清华",
"resource":"TEST",
"plugin_id":"51356efdf12df",
"phone":"13838383388",
"phone_zone":"+86",
"verifycode":"123563"
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
user_id | true | String | 用户标识 |
access_token | true | String | 调用凭证 |
refresh_token | true | String | 刷新凭证 |
expire_in | true | Int | 调用凭证的有效期 |
authorize | true | String | 用户认证码 |
返回示例:
{
"user_id":12356465,
"access_token":"562233sdffdsf1s3f2sdfg234r",
"refresh_token":"sfffff23345563rfa234436346",
"expire_in":7200,
"authorize":"dsf564sfgg"
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4031001 | 调用凭证权限被禁止访问 |
4031003 | 无效的调用凭证 |
4031002 | 需要调用凭证 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4031024 | 权限不足 |
4001482 | 第三方源未知 |
4041020 | 应用不存在 |
4041023 | 未设置第三方登录地址 |
4001059 | 第三方验证失败 |
4041010 | 企业不存在 |
4001477 | IOS没有配置Apple登录 |
4001478 | 调用Apple超时 |
4001479 | 调用Apple失败 |
4001480 | Apple Jwt过期 |
4001481 | Apple授权码非法 |
4001483 | APP未启用Apple登录 |
4001137 | APP未启用 |
4001003 | 手机验证码不存在 |
4001004 | 手机验证码错误 |
5.1.4 国外第三方用户登录
接口描述
由于国外网络访问限制原因导致该接口的存在,目前主要适用于facebook和twitter两种第三方登录;其中facebook使用oauth2.0验证;twitter使用oauth1.0验证,验证用户的接口是https://api.twitter.com/1.1/users/show.json?user_id={twitter_user_id}(客户端构造oauth_signature时需要用到)
请求方式
POST
请求地址
/v2/user_auth_third_foreign
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Content-Type | true | String | application/json |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
source | body | true | Int | 用户第三方源 7: FaceBook 8: 推特 12: Apple 13: google |
plugin_id | body | false | String | 应用标识 当source为Apple时,该项必传,需要根据此项去查找对应的苹果client_id和client_secret 当source为Google时,该项必传,需要根据此项去查找对应的谷歌的client_id |
open_id | body | true | String | 第三方用户标识 当source为Google时,可不传或随意传不以传参为准,会从google的authCode中解析得到, google开发者中心不建议直接传user_id |
corp_id | body | true | String | 企业标识 |
access_token | body | true | String | 第三方调用凭证 当source为Apple时,accessToken为苹果auth2认证中的authorization code 当source为Google时,accessToken不是真实的Google AccessToken,而是Google临时授权码authCode |
name | body | false | String | 用户名称 |
resource | body | false | String | 用户登录源 |
oauth_version | body | true | String | oauth版本.值为1.0或者2.0 |
oauth_consumer_key | body | false | String | 注册应用后由应用服务商提供(如果oauth_version为1.0,必须提供) |
oauth_nonce | body | false | String | 随机字符串,须保证每次都不同(如果oauth_version为1.0,必须提供) |
oauth_timestamp | body | false | String | 时间戳(如果oauth_version为1.0,必须提供) |
oauth_signature_method | body | false | String | 签名base string 的方法,目前支持 HMAC-SHA1(如果oauth_version为1.0,必须提供) |
oauth_signature | body | false | String | 签名值(如果oauth_version为1.0,必须提供) |
请求示例:
{
"source": 7,
"corp_id": "12564dsf56efsdf",
"open_id":"651fs1f25frdfsd",
"access_token":"1fsd545rf56f15a1d",
"name":"李清华",
"resource":"TEST",
"plugin_id":"12365a6efcdf23r43115",
"oauth_version":"1.0",
"oauth_consumer_key":"DC0sePOBbQ8bYdC8r4Smg",
"oauth_signature_method":"HMAC-SHA1",
"oauth_timestamp":"1477446586",
"oauth_nonce":"1130669700",
"oauth_signature":"PAWOXPqbWK13rL%2F5QrWfKcLRfKs%3D"
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
user_id | true | String | 用户标识 |
access_token | true | String | 调用凭证 |
refresh_token | true | String | 刷新凭证 |
expire_in | true | Int | 调用凭证的有效期 |
authorize | true | String | 用户认证码 |
返回示例:
{
"user_id":56562231,
"access_token":"dsf156sa1f65r532r561f561fsdf",
"refresh_token":"165sd15f11eaw5d32rfdsfdsd",
"expire_in":7200,
"authorize":"111sd23f3rfdf1sd32f"
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4031001 | 调用凭证权限被禁止访问 |
4031003 | 无效的调用凭证 |
4031002 | 需要调用凭证 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4031024 | 权限不足 |
4001482 | 第三方源未知 |
4041020 | 应用不存在 |
4041023 | 未设置第三方登录地址 |
4001059 | 第三方验证失败 |
4041010 | 企业不存在 |
4001477 | IOS没有配置Apple登录 |
4001478 | 调用Apple超时 |
4001479 | 调用Apple失败 |
4001480 | Apple Jwt过期 |
4001481 | Apple授权码非法 |
4001483 | APP未启用Apple登录 |
4001137 | APP未启用 |
4001003 | 手机验证码不存在 |
4001004 | 手机验证码错误 |
5.1.5 第三方用户初始化登录密码
接口描述
C端第三方用户一般不需要使用密码进行登录,但是在绑定了邮箱或者手机之后需要切换为邮箱或者手机登录时又必须要有密码;为了解决该需求故而提供了第三方用户初始化登录密码的功能,第三方用户只能初始化一次密码,如若忘记密码则需要进入找回密码流程
请求方式
POST
请求地址
/v2/user/{user_id}/init_pwd
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Content-Type | true | String | application/json |
Access-Token | true | String | 调用凭证 企业用户 |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
user_id | path | true | Int | 用户标识 |
password | body | true | String | 初始化密码 |
请求示例:
{
"password": "Test46525dff"
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
无 | 无 | 无 | 无 |
返回示例:
{
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4031001 | 调用凭证权限被禁止访问 |
4031003 | 无效的调用凭证 |
4031002 | 需要调用凭证 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4031024 | 权限不足 |
4041011 | 用户不存在 |
4001107 | 用户不是第三方用户 |
4001108 | 用户已初始化密码 |
5.1.6 非第三方用户绑定第三方账号
接口描述
使用手机号或者邮箱等注册成为平台用户后,被标记为非第三方用户,我们称之为手机用户/邮箱用户等;手机用户/邮箱用户向与某个第三方账号(如微信账号)进行关联,未解决该场景提供如下接口,在一个已有账号下绑定第三方账号的openId
请求方式
POST
请求地址
/v2/user/{user_id}/bind_third
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Access-Token | true | String | 调用凭证 企业用户 |
Content-Type | true | String | application/json |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
user_id | path | true | Int | 用户标识 |
source | body | true | Int | 用户第三方源 4: 微信 5: QQ 6: 微博 7: FaceBook 8: 推特 10: 其他 12: Apple 13: google |
plugin_id | body | false | String | 应用标识 当source为Apple时,该项必传,需要根据此项去查找对应的苹果client_id和client_secret 当source为Google时,该项必传,需要根据此项去查找对应的谷歌的client_id |
open_id | body | true | String | 第三方用户标识 当source为Google时,可不传或随意传不以传参为准,会从google的authCode中解析得到, google开发者中心不建议直接传user_id |
access_token | body | true | String | 第三方调用凭证 当source为Apple时,accessToken为苹果auth2认证中的authorization code 当source为Google时,accessToken不是真实的Google AccessToken,而是Google临时授权码authCode |
请求示例:
{
"source": 4,
"open_id":"12sdfsdf5645s6fgs",
"access_token":"4156dsfsfefdf",
"plugin_id":"123s5afffewfdsfsd"
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
无 | 无 | 无 | 无 |
返回示例:
{
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4031001 | 调用凭证权限被禁止访问 |
4031003 | 无效的调用凭证 |
4031002 | 需要调用凭证 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4031024 | 权限不足 |
4001482 | 第三方源未知 |
4041020 | 应用不存在 |
4041023 | 未设置第三方登录地址 |
4001059 | 第三方验证失败 |
4041010 | 企业不存在 |
4001477 | IOS没有配置Apple登录 |
4001478 | 调用Apple超时 |
4001479 | 调用Apple失败 |
4001480 | Apple Jwt过期 |
4001481 | Apple授权码非法 |
4001483 | APP未启用Apple登录 |
4001137 | APP未启用 |
5.1.7 非第三方用户绑定国外第三方帐号
接口描述
使用手机号或者邮箱等注册成为平台用户后,被标记为非第三方用户,我们称之为手机用户/邮箱用户等;手机用户/邮箱用户向与某个国外第三方账号(如微信账号)进行关联,未解决该场景提供如下接口,在一个已有账号下绑定国外第三方账号的openId
请求方式
POST
请求地址
/v2/user/{user_id}/bind_third_foreign
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Access-Token | true | String | 调用凭证 企业用户 |
Content-Type | true | String | application/json |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
user_id | path | true | Int | 用户标识 |
source | body | true | Int | 用户第三方源 7: FaceBook 8: 推特 12: Apple 13: google |
plugin_id | body | false | String | 应用标识 当source为Apple时,该项必传,需要根据此项去查找对应的苹果client_id和client_secret 当source为Google时,该项必传,需要根据此项去查找对应的谷歌的client_id |
open_id | body | true | String | 第三方用户标识 当source为Google时,可不传或随意传不以传参为准,会从google的authCode中解析得到, google开发者中心不建议直接传user_id |
access_token | body | true | String | 第三方调用凭证 当source为Apple时,accessToken为苹果auth2认证中的authorization code 当source为Google时,accessToken不是真实的Google AccessToken,而是Google临时授权码authCode |
oauth_version | body | true | String | oauth版本.值为1.0或者2.0 |
oauth_consumer_key | body | false | String | 注册应用后由应用服务商提供(如果oauth_version为1.0,必须提供) |
oauth_nonce | body | false | String | 随机字符串,须保证每次都不同(如果oauth_version为1.0,必须提供) |
oauth_timestamp | body | false | String | 时间戳(如果oauth_version为1.0,必须提供) |
oauth_signature_method | body | false | String | 签名base string 的方法,目前支持 HMAC-SHA1(如果oauth_version为1.0,必须提供) |
oauth_signature | body | false | String | 签名值(如果oauth_version为1.0,必须提供) |
请求示例:
{
"source": 7,
"open_id":"156s1fewfdsfsdf5",
"access_token":"11f6asd51wefdsfds",
"plugin_id":"4165fsdaewfdsfsd",
"oauth_version":"1.0",
"oauth_consumer_key":"DC0sePOBbQ8bYdC8r4Smg",
"oauth_signature_method":"HMAC-SHA1",
"oauth_timestamp":"1477446586",
"oauth_nonce":"1130669700",
"oauth_signature":"PAWOXPqbWK13rL%2F5QrWfKcLRfKs%3D"
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
无 | 无 | 无 | 无 |
返回示例:
{
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4031001 | 调用凭证权限被禁止访问 |
4031003 | 无效的调用凭证 |
4031002 | 需要调用凭证 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4031024 | 权限不足 |
4001482 | 第三方源未知 |
4041020 | 应用不存在 |
4041023 | 未设置第三方登录地址 |
4001059 | 第三方验证失败 |
4041010 | 企业不存在 |
4001477 | IOS没有配置Apple登录 |
4001478 | 调用Apple超时 |
4001479 | 调用Apple失败 |
4001480 | Apple Jwt过期 |
4001481 | Apple授权码非法 |
4001483 | APP未启用Apple登录 |
4001137 | APP未启用 |
4041011 | 用户不存在 |
5.1.8 非第三方用户解绑第三方账号
接口描述
使用手机号或者邮箱等注册成为平台用户后,被标记为非第三方用户,我们称之为手机用户/邮箱用户等;手机用户/邮箱用户向与某个第三方账号(如微信账号)进行关联,此时被认定为非第三方用户绑定了第三方账号;非第三方用户在使用一段时间后想要解绑第三方账号,例如解绑微信账号
请求方式
POST
请求地址
/v2/user/{user_id}/unbind_third
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Access-Token | true | String | 调用凭证 企业用户 |
Content-Type | true | String | application/json |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
user_id | path | true | Int | 用户标识 |
source | body | true | Int | 用户第三方源 4: 微信 5: QQ 6: 微博 7: FaceBook 8: 推特 10: 其他 12: Apple 13: google |
请求示例:
{
"source": 4
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
无 | 无 | 无 | 无 |
返回示例:
{
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4031001 | 调用凭证权限被禁止访问 |
4031003 | 无效的调用凭证 |
4031002 | 需要调用凭证 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4031024 | 权限不足 |
4041010 | 企业不存在 |
4041011 | 用户不存在 |
4041118 | 第三方用户源认证策略不存在 |
5.1.9 查询第三方openId是否绑定用户
接口描述
根据第三方openId以及accessToken查询openId是否被平台用户所绑定,用于App登录之前的交互体验
请求方式
POST
请求地址
/v2/user_third/is_bind
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Content-Type | true | String | application/json |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
source | body | true | Int | 用户第三方源 4: 微信 5: QQ 6: 微博 7: FaceBook 8: 推特 10: 其他 12: Apple 13: google |
plugin_id | body | false | String | 应用标识 当source为Apple时,该项必传,需要根据此项去查找对应的苹果client_id和client_secret 当source为Google时,该项必传,需要根据此项去查找对应的谷歌的client_id |
open_id | body | true | String | 第三方用户标识 当source为Google时,可不传或随意传不以传参为准,会从google的authCode中解析得到, google开发者中心不建议直接传user_id |
access_token | body | true | String | 第三方调用凭证 当source为Apple时,accessToken为苹果auth2认证中的authorization code 当source为Google时,accessToken不是真实的Google AccessToken,而是Google临时授权码authCode |
corp_id | body | true | String | 企业标识 |
请求示例:
{
"source": 4,
"open_id":"156465ew23erfd",
"access_token":"131655dsaf23434rfs",
"plugin_id":"132132324srfd",
"corp_id":"416516523rfef34rf"
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
is_bind | true | Boolean | 第三方OpenId是否绑定了平台用户 |
open_id | false | String | 第三方OpenId绑定了平台用户的标识 |
返回示例:
{
"open_id": "123649222",
"is_bind": true
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4031001 | 调用凭证权限被禁止访问 |
4031003 | 无效的调用凭证 |
4031002 | 需要调用凭证 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4031024 | 权限不足 |
4001482 | 第三方源未知 |
4041020 | 应用不存在 |
4041023 | 未设置第三方登录地址 |
4001059 | 第三方验证失败 |
4041010 | 企业不存在 |
4001477 | IOS没有配置Apple登录 |
4001478 | 调用Apple超时 |
4001479 | 调用Apple失败 |
4001480 | Apple Jwt过期 |
4001481 | Apple授权码非法 |
4001483 | APP未启用Apple登录 |
4001137 | APP未启用 |
5.1.10 同步物联云平台标准第三方用户手机号
接口描述
非主流第三方平台用户(source为10)第三方登录成功之后,查询用户信息如果发现用户未绑定手机号,调用此接口发起同步第三方平台的手机号;后端处理逻辑如下:
- 判断调用用户是否为非主流第三方平台用户,如果不是则直接返回报错
- 判断调用用户是否已绑定手机号码,如果已绑定则直接返回报错
- 根据调用用户的openId以及企业后台配置的反查用户信息接口,按照规范向第三方平台发起请求,获得用户在第三方平台的手机号phone
- 查询手机号在物联平台是否已存在,如果已存在则直接返回报错
- 手机号在物联平台不存在,则为调用用户同步初始化手机号
- 发布用户信息变更事件
请求方式
POST
请求地址
/v2/user/third/sync-phone
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Access-Token | true | String | 调用凭证 企业用户 |
Content-Type | true | String | application/json |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
access_token | body | true | String | 第三方调用凭证 当source为Apple时,accessToken为苹果auth2认证中的authorization code 当source为Google时,accessToken不是真实的Google AccessToken,而是Google临时授权码authCode |
请求示例:
{
"access_token":"11165123dsfsdf23sdfsd"
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
phone | true | String | 用户已同步的手机号 |
返回示例:
{
"phone": "13838383388"
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4031001 | 调用凭证权限被禁止访问 |
4031003 | 无效的调用凭证 |
4031002 | 需要调用凭证 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4031024 | 权限不足 |
4001484 | 用户源不是other类型 |
4001485 | 用户已经绑定手机号了 |
4001486 | 反查第三方用户信息手机号为非法 |
4041011 | 用户不存在 |
4001094 | 手机号已被其他用户使用 |
5.1.11 校验第三方邮箱在平台的信息
接口描述
手机App登录到第三方平台获取到用户在第三方平台邮箱以及第三方调用凭证,向物联平台查询第三方邮箱是否已在物联平台下;用于决定手机App的展示,
请求方式
POST
请求地址
/v2/user/third/email-check
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Content-Type | true | String | application/json |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
source | body | true | Int | 用户第三方源 4: 微信 5: QQ 6: 微博 7: FaceBook 8: 推特 10: 其他 12: Apple 13: google |
plugin_id | body | false | String | 应用标识 当source为Apple时,该项必传,需要根据此项去查找对应的苹果client_id和client_secret 当source为Google时,该项必传,需要根据此项去查找对应的谷歌的client_id |
open_id | body | true | String | 第三方用户标识 当source为Google时,可不传或随意传不以传参为准,会从google的authCode中解析得到, google开发者中心不建议直接传user_id |
corp_id | body | true | String | 企业标识 |
access_token | body | true | String | 第三方调用凭证 当source为Apple时,accessToken为苹果auth2认证中的authorization code 当source为Google时,accessToken不是真实的Google AccessToken,而是Google临时授权码authCode |
body | true | String | 第三方邮箱 |
请求示例:
{
"source": 4,
"corp_id": "13216151dsafd1w6ef1",
"open_id":"15315sffffewfsdfds",
"access_token":"163132fdsf23dfsd",
"email":"liqinghua@xlink.cn",
"plugin_id":"415623fdsfffffffdsfd"
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
is_register | true | String | 在平台是否已注册 |
user_id | false | String | 如果已注册,则对应平台的用户标识 |
false | String | 如果已注册,则对应平台的邮箱 |
返回示例:
{
"is_register":true,
"user_id":89561125,
"email":"liqinghua@xlink.cn"
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4031001 | 调用凭证权限被禁止访问 |
4031003 | 无效的调用凭证 |
4031002 | 需要调用凭证 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4031024 | 权限不足 |
4001482 | 第三方源未知 |
4041020 | 应用不存在 |
4041023 | 未设置第三方登录地址 |
4001059 | 第三方验证失败 |
4041010 | 企业不存在 |
4001477 | IOS没有配置Apple登录 |
4001478 | 调用Apple超时 |
4001479 | 调用Apple失败 |
4001480 | Apple Jwt过期 |
4001481 | Apple授权码非法 |
4001483 | APP未启用Apple登录 |
4001137 | APP未启用 |
5.1.12 同步物联云平台标准第三方用户邮箱
接口描述
非主流第三方平台用户(source为10)第三方登录成功之后,查询用户信息如果发现用户未绑定邮箱,调用此接口发起同步第三方平台的邮箱;后端处理逻辑如下:
- 判断调用用户是否为非主流第三方平台用户,如果不是则直接返回报错
- 判断调用用户是否已绑定邮箱,如果已绑定则直接返回报错
- 根据调用用户的openId以及企业后台配置的反查用户信息接口,按照规范向第三方平台发起请求,获得用户在第三方平台的邮箱email
- 查询邮箱在物联平台是否已存在,如果已存在则直接返回报错
- 邮箱在物联平台不存在,则为调用用户同步初始化邮箱
- 发布用户信息变更事件
请求方式
POST
请求地址
/v2/user/third/sync-email
请求头
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
Access-Token | true | String | 调用凭证 企业用户 |
Content-Type | true | String | application/json |
请求参数
名称 | 位置 | 必填 | 类型 | 备注 |
---|---|---|---|---|
access_token | body | true | String | 第三方调用凭证 当source为Apple时,accessToken为苹果auth2认证中的authorization code 当source为Google时,accessToken不是真实的Google AccessToken,而是Google临时授权码authCode |
source | body | true | Int | 用户第三方源 10: 其他 |
请求示例:
{
"access_token": "we1ds2356sd4f5f1sd2fdsf",
"source": 10
}
返回参数说明
名称 | 必填 | 类型 | 备注 |
---|---|---|---|
true | String | 用户已同步的邮箱 |
返回示例:
{
"email": "liqinghua@xlink.cn"
}
错误码:
错误码 | 描述 |
---|---|
4001001 | 请求数据字段验证不通过 |
4001002 | 请求数据必须字段不可为空 |
4031001 | 调用凭证权限被禁止访问 |
4031003 | 无效的调用凭证 |
4031002 | 需要调用凭证 |
4041001 | 接口不存在 |
5031001 | 系统错误 |
4031024 | 权限不足 |
4001484 | 用户源不是other类型 |
4001096 | 用户已经绑定邮箱了 |
4001511 | 反查第三方用户信息邮箱为非法 |
4041011 | 用户不存在 |
4001096 | 邮箱已被其他用户使用 |